# 导入库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import SGDRegressor

# 输入训练集数据
x = np.array([[100], [113], [90], [89], [60], [70], [50], [45], [55], [78]])   # 房屋面积
y = np.array([[301], [324], [285], [296], [200], [260], [300], [120], [180], [245]])  # 售价

# 建立并训练模型
model = SGDRegressor(loss='huber', max_iter=5000, random_state=42)
model.fit(x, y.ravel())

# 输出线性回归方程参数
print("w =", model.coef_, "b =", model.intercept_)

# 模型预测
y2 = model.predict(x)

# 设置中文字体
plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC", "Arial Unicode MS"]
plt.rcParams['axes.unicode_minus'] = False


# 设置坐标轴和标签
plt.xlabel('面积', fontsize=12)
plt.ylabel('售价', fontsize=12)
plt.axis([40, 125, 100, 400])

# 绘制散点图与拟合直线
plt.scatter(x, y, s=60, c='k', marker='o', label='真实值')
plt.plot(x, y2, 'r-', label='预测值')

# 添加图例
plt.legend()

#显示图像
plt.show()